using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BL;
using BE;

public partial class UsuarioEdit : BasePage
{
    #region Eventos
    protected void Page_Load(object sender, EventArgs e)
    {
        txtNombre.Focus();
        Title = Resources.Resource.lblUsuarioPageName;

        if (!IsPostBack)
        {                        
            CargarPerfiles();
            chkEstado.Checked = true;
            if (Request.QueryString["UsuarioId"] != null && Request.QueryString["UsuarioId"] != String.Empty)
            {
                Int32 uidUsuarioId = Convert.ToInt32(Request.QueryString["UsuarioId"]);
                CargarUsuario(uidUsuarioId);
            }            
        }
    }
    protected void btoGrabar_Click(object sender, EventArgs e)
    {
        try
        {
            Int32 uidUsuarioId = 0;
            if (Request.QueryString["UsuarioId"] != null && Request.QueryString["UsuarioId"] != String.Empty)
                uidUsuarioId = Convert.ToInt32(Request.QueryString["UsuarioId"]);
            else
                uidUsuarioId = 0;
        
            String strMensaje = String.Empty;
            if (!CommonBO.ValidarNombre(0, uidUsuarioId, txtLogin.Text.Trim(), "Usuario"))
                strMensaje += String.Format(Resources.Resource.msg_ValidarNombre, "login");

            if (strMensaje != String.Empty)
            {
                ShowMessageInAjax(UpdatePanelUsuario, strMensaje);
                return;
            }      

            Usuario oUsuario = new Usuario();
            oUsuario.UsuarioId = uidUsuarioId;
            oUsuario.Login = txtLogin.Text.Trim();
            oUsuario.Nombres = txtNombre.Text.Trim();
            oUsuario.Email = txtEmail.Text.Trim();
            oUsuario.PerfilId = Convert.ToInt64(ddlPerfil.SelectedValue);
            oUsuario.Password = Configuracion.CryptString(txtContrasena.Text.Trim());
            oUsuario.LogUsuarioId = ((Usuario)Session[Constans.SessionUsuario.ToString()]).UsuarioId;
            oUsuario.Estado = chkEstado.Checked;
            UsuarioBO.InsertarUsuario(oUsuario);
            RedirectPageInAjax(UpdatePanelUsuario, Resources.Resource.msgUsuarioGuardado, "UsuarioAdmin.aspx");
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessageInAjax(UpdatePanelUsuario);
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessageInAjax(UpdatePanelUsuario);
        }


    }
    protected void btoCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("UsuarioAdmin.aspx");
    }    
    #endregion

    #region Metodos
    private void CargarUsuario(Int32 uidUsuarioId)
    {
        try
        {
            Usuario oUsuario = UsuarioBO.ObtenerDetalleUsuario(uidUsuarioId);
            if (oUsuario != null)
            {
                txtNombre.Text = oUsuario.Nombres;
                txtEmail.Text = oUsuario.Email;
                txtLogin.Text = oUsuario.Login;
                chkEstado.Checked = oUsuario.Estado;

                if (ddlPerfil.Items.FindByValue(oUsuario.PerfilId.ToString()) != null)
                    ddlPerfil.SelectedValue = oUsuario.PerfilId.ToString();

                TablaUsuario.Rows[3].Visible = false;
            }
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessageInAjax(UpdatePanelUsuario);
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessageInAjax(UpdatePanelUsuario);
        }
    }
    private void CargarPerfiles()
    {
        ddlPerfil.DataSource = PerfilBO.ObtenerPerfiles(String.Empty);
        ddlPerfil.DataTextField = "Nombre";
        ddlPerfil.DataValueField = "PerfilId";
        ddlPerfil.DataBind();
    }
    #endregion   
}
